A virtual machine (VM) is a software platform capable of replicating a computing device with full operating system (OS) and applications functions. The VM is generally installed on a target machine that functions as the host by contributing physical resources like memory, and processing capabilities. A remote device uses client VM software to connect to the remote device and view the VM operating on the target machine. As a result, a virtual machine provides a remote computing device user with a complete software based computing platform separate from the remote computing device on which the software runs. The level of separation between the VM software and the hardware on which it runs establishes the type of virtual machine with the primary types being a system virtual machine and an application virtual machine. A system virtual machine type allows a remote user of the VM to access some of the physical hardware devices on which the VM executes. In contrast, the application VM functions as a stand-alone application platform over which other software applications are implemented. The purpose of the application VM is to enable different operating systems with different file structures to function within an existing native operating system.
The virtual machine data, operations, and functions are assigned to a virtual machine image file in the native memory of a target machine. Remote devices having client VM software installed within the device access the virtual machine image remotely. The image file renders in the client VM software on the remote device as an OS with its overlying applications and data displayed for the user of the remote machine. Any changes made the application, data, or OS is saved to the virtual machine image on the target machine. The VM can be scheduled for execution at geographically disparate cloud locations. However, storing a virtual machine image across networks from one location to another is complicated by the size of the data and the number of users connected to the virtual machine image.
One conventional VM method enabled a share repository of the virtual machine image to be accessible by both the current or primary target machine and a secondary target machine for backup. This required both the primary target machine and a secondary target machine to be on the same sub-net (or within the same local network) for effective results without significant lag. Further, it is difficult to identify remote sites to store replicas of the virtual machine image during a ‘live’ or in-use session. Problems associated with network latency, long-term and short-term costs of chosen remote sites are some of the issues associated with choosing remote sites for replicating virtual machine image data.